JSTL<c:if>标记中的java测试属性
我在JSP中看到了如下代码
<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
<li>user</li>
</c:if>
我的困惑在于test
属性的值中出现的“=”。我的理解是<%= %>
中包含的任何内容都会打印到输出中,但分配给test的值肯定是布尔值,那么为什么这样做呢
对于奖励积分,是否有任何方法可以更改上面的属性值,使其不使用scriptlet代码?据推测,这意味着使用EL代替
干杯, 唐
# 1 楼答案
JSP标记库中的属性通常可以是静态的,也可以在请求时解析。如果在请求时解析它们,JSP将在运行时解析它们的值,并将输出传递给标记。这意味着您可以将几乎任何JSP代码放入属性中,标记的行为将与生成的输出相应
如果查看jstl taglib文档,您可以看到哪些属性是最新时间,哪些不是http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html
# 2 楼答案
你也可以使用
# 3 楼答案
test
属性用来确定某个内容是否为真的所有内容都是字符串“true”(区分大小写)。例如,下面的代码将打印“Hello world!”<%= %>
内的代码返回一个布尔值,因此它将打印字符串“true”或“false”,这正是<c:if>
标记所寻找的# 4 楼答案
<;%%=%>;它本身将被发送到输出,在JSTL的上下文中,它将被计算为一个字符串
# 5 楼答案
<;%=%之间的表达式>;在计算c:if标记之前计算。那么,假设|请求。isUserInRole |返回| true |,您的示例将首先评估为:
然后执行c:if标记